package com.unsafe5_lock6;
class TicketSaleThread extends Thread {
    private static int ticket = 100;

    @Override
    public void run() {
//        直接锁这里，肯定不行，会导致，只有一个窗口卖票
        while (ticket > 0) {

            saleOneTicket();
        }
    }
    public synchronized static void saleOneTicket(){
//        锁对象是TicketSaleThread类的Class对象，
//        而一个类的Class对象在内存中只有一个
        if (ticket>0){
//            不加条件，相当于条件判断没有进入锁管控，
//            线程安全问题就没有解决
            System.out.println(Thread.currentThread().getName() + "卖出一张票，票号：" + ticket);
            ticket--;
        }
    }
}
//静态方法加锁
public class SaleTicketDemo03 {
    public static void main(String[] args) {
        TicketSaleThread w1 = new TicketSaleThread();
        TicketSaleThread w2 = new TicketSaleThread();
        TicketSaleThread w3 = new TicketSaleThread();
        w1.setName("窗口1");
        w2.setName("窗口2");
        w3.setName("窗口3");

        w1.start();
        w2.start();
        w3.start();
    }
}
